home *** CD-ROM | disk | FTP | other *** search
- #include "Launchit.h"
-
- // rgacsun
- OSErr SetTarget( const unsigned long creator, Boolean makeFrontmost )
- {
- OSErr err;
- ProcessSerialNumber process;
- FSSpec fsRec;
-
- err = ProcInMemory( 'CNOW', &process );
-
- if( noErr == err )
- goto egress; // already in memory. Don't search the disk
-
- err = DoCatSearch( 'CNOW', 'APPL', &fsRec );
-
- if( !err )
- {
- err = LaunchMe( &fsRec, &process );
-
- }
-
- egress:
- if( !err && makeFrontmost )
- { // Bring to the front so user knows something is happening.
- SetFrontProcess( &process ); // make it active
- }
-
- return err;
-
- }
-
- OSErr MakeThisProcessFrontmost( void )
- {
- OSErr err;
- ProcessSerialNumber psn;
-
- err = GetCurrentProcess( &psn );
- if( !err )
- {
- err = SetFrontProcess( &psn );
- }
-
- return err;
- }
-
- OSErr ProcInMemory ( const unsigned long creator, ProcessSerialNumber *psn )
- {
-
- OSErr osErr = noErr;
- ProcessInfoRec procInfo;
- Str255 procName;
- FSSpec appFSSpec;
-
- // loop through looking at all processes
- psn->highLongOfPSN = kNoProcess;
- psn->lowLongOfPSN = kNoProcess;
-
- procInfo.processInfoLength = sizeof(ProcessInfoRec);
- procInfo.processName = procName;
- procInfo.processAppSpec = &appFSSpec;
-
- while (procNotFound != (osErr = GetNextProcess( psn )))
- {
- if (noErr == (osErr = GetProcessInformation( psn, &procInfo)))
- {
- if( creator == procInfo.processSignature )
- {
- goto egress; // psn already loaded
- }
- }
- }
-
- egress:
- return osErr;
- }
-
- #if 0
- Secs2Date(procInfo.processLaunchDate, &launchDateTime);
- if ('\0' == procName[1])
- procName[1] = '0';
- printf(
- "%-32P %08lx.%08lx '%c%c%c%c' '%c%c%c%c' %08lx %08lx %08lx %08lx %08lx.%08lx %2d/%2d/%2d %2d:%02d:%02d %08lx %08ld %04d %P\n",
- procInfo.processName,
- procInfo.processNumber.highLongOfPSN,
- procInfo.processNumber.lowLongOfPSN,
- ((char *) &procInfo.processType)[0],
- ((char *) &procInfo.processType)[1],
- ((char *) &procInfo.processType)[2],
- ((char *) &procInfo.processType)[3],
- ((char *) &procInfo.processSignature)[0],
- ((char *) &procInfo.processSignature)[1],
- ((char *) &procInfo.processSignature)[2],
- ((char *) &procInfo.processSignature)[3],
- procInfo.processMode,
- procInfo.processLocation,
- procInfo.processSize,
- procInfo.processFreeMem,
- procInfo.processLauncher.highLongOfPSN,
- procInfo.processLauncher.lowLongOfPSN,
- launchDateTime.month,
- launchDateTime.day,
- launchDateTime.year,
- launchDateTime.hour,
- launchDateTime.minute,
- launchDateTime.second,
- procInfo.processActiveTime,
- procInfo.processAppSpec -> parID,
- procInfo.processAppSpec -> vRefNum,
- procInfo.processAppSpec -> name
- );
- #endif